package com.example.role.mq;

import com.example.role.pojo.Office;
import com.example.role.service.OfficeEsService;
import com.example.role.service.serviceimpl.OfficeImpl;
import org.springframework.amqp.rabbit.annotation.Queue;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;

@Component
public class OfficeOptListener {

        @Autowired
    OfficeEsService officeEsService;
        @Autowired
    OfficeImpl officeimpl;

    @RabbitListener(queuesToDeclare = @Queue("es.mysql.copy.data.temp"))
    public void copyDataToEsFromMysql(String msg){
        //解析消息
        String[] strings = msg.split("-");
        //获取订单ID
        String officeId = strings[0];
        //获取操作类型
        String type = strings[1];

        if(type.equals("insert")||type.equals("update")){
            // 在es业务类中 没有update这个方法
            // 它将 add 和 update 合并了 save
            //取决于你的实体类中 有不有主键
            //从数据据库中  通过ID获取 订单完整数据（后期可以用redis优化）
            Office office = officeimpl.getOfficeById(officeId);
            officeEsService.save(office);
        }else if(type.equals("delete")){
            officeEsService.deleteById(officeId);
     }

    }


}
